package com.example.module_service.park

import android.os.Bundle
import android.util.Log
import androidx.activity.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.blankj.utilcode.util.GsonUtils
import com.example.lib_base.path.RouterPath
import com.example.lib_common.view.view.BaseMvvmActivity

import com.example.module_service.R
import com.example.module_service.adapter.ParkPageAdapter
import com.example.module_service.databinding.ActivityParkBinding
import com.example.module_service.viewmodel.ServerViewModel
import dagger.hilt.android.AndroidEntryPoint
import dagger.hilt.android.HiltAndroidApp
import kotlin.math.log

@AndroidEntryPoint
@Route(path = RouterPath.PATH_PARK_PAGE)
class ParkActivity : BaseMvvmActivity<ActivityParkBinding>() {

    private val mViewModel: ServerViewModel by viewModels()
    private var arrid = 1 // 注意：确保areaId=1是有效参数（服务器存在该ID的数据）
    private val parkAdapter = ParkPageAdapter()

    override fun getLayoutId(): Int = R.layout.activity_park

    // 初始化View和观察者（核心修改）
    override fun initViews() {
        // 1. 初始化RecyclerView
        mDataBinding.rvPark.layoutManager = LinearLayoutManager(this)
        mDataBinding.rvPark.adapter = parkAdapter

        // 2. 设置LiveData观察者（必须在请求前设置，否则数据回来时收不到）
        observeViewModel()

        // 3. 触发网络请求（放在初始化最后，确保观察者已注册）
        mViewModel.getPark(arrid)
    }

    // 单独抽取观察者逻辑，代码更清晰
    private fun observeViewModel() {
        // 成功回调
        mViewModel.mSuccess.observe(this) { parkList ->
            Log.i("ParkActivity", "停车场数据接收成功：${GsonUtils.toJson(parkList)}")
            // 清空旧数据（避免重复添加），添加新数据，刷新列表
            parkAdapter.data.clear()
            parkAdapter.data.addAll(parkList)
            parkAdapter.notifyDataSetChanged()
        }

        // 错误回调（新增，排查请求失败原因）
        mViewModel.mError.observe(this) { errorMsg ->
            Log.e("ParkActivity", "请求失败：$errorMsg")
            // 可添加Toast提示用户
            // Toast.makeText(this, "请求失败：$errorMsg", Toast.LENGTH_SHORT).show()
        }
    }

    // 移除原有的getActivityState和saveActivityState中无关逻辑（如果这两个方法是Base类强制重写，空实现即可）
    override fun getActivityState(state: Bundle) {
        // 空实现（原逻辑已迁移到initViews）
    }

    override fun saveActivityState(outState: Bundle) {
        // 空实现（仅用于保存状态，如屏幕旋转时的数据，与网络请求无关）
    }


}